﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


using np = NPOI.XSSF.UserModel;

using System.IO;
using NPOI.XSSF.UserModel;
using NPOI.HSSF.Util;



namespace MyCourseManageProject.UI
{
    public partial class FrmTeacherManage : Form
    {
        public FrmTeacherManage()
        {
            InitializeComponent();
        }


        //1声一个公共变量,(sheet对象)工作表对象
        NPOI.SS.UserModel.ISheet st;
        private void FrmTeacherManage_Load(object sender, EventArgs e)
        {
            //获取工作簿
            //创建文件流      获取文件地址: 文件绝对路径(只能读取 xlsx 格式),                          打开,         方式读取
           // var fs = new FileStream(@"C:\Users\Administrator\Desktop\zhang.xlsx", FileMode.Open, FileAccess.Read);
            //读工作簿:
            //var wk = new np.XSSFWorkbook(fs);
            //GetSheet根据名字获取  GetSheetAt根据表位置获取
          //  st = wk.GetSheetAt(0);//从第一个开始获取
            //测试  获取表名
            //MessageBox.Show(st.SheetName);
            //for循环(开始行到结束行)
            //for (int i = 1; i < 20; i++)
            //{
            //    //                          获取行     获取列       无法运行报错
            //    this.lbNum.Items.Add(st.GetRow(i).GetCell(1).NumericCellValue);
            //}
            //关闭文件流
           // fs.Close();
        }

        /// <summary>
        /// 导入Excel操作
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnInput_Click(object sender, EventArgs e)
        {
            //读取单元格公式
            txtFun.Text = st.GetRow(0).GetCell(1).CellFormula;
            
            
          


            //读取单元格公式的值
            // txtFun.Text = st.GetRow(0).GetCell(1).NumericCellValue.ToString();
            //读取时间 DateCellValue.ToString("hh:mm:ss");
            //读取日期  DateCellValue.ToString("yyyy-MM-dd");
            //读取字符串 StringCellValue
            //读取数值 NumericCellValue
            //读取段元格数值类:CellType
            //首行:FirstRowNum
            //尾行:LastRowNum
           
        }

        /// <summary>
        /// 导出Excel的操作
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOpenExcel_Click(object sender, EventArgs e)
        {
            //1创建工作簿 2创建工作表  3创建行  4创建单元格 5单元格赋值  
            //6合并单元格  7设置字体颜色  8设置单元格底色 9输出到文件
           //声明工作簿
            var wk = new XSSFWorkbook();
            //声明工作表
            var st = wk.CreateSheet();
            //创建行(默认从0行开始)
            var r = st.CreateRow(0);
            //创建单元格(默认从0行开始)
            var c = r.CreateCell(0);
            //赋值
            c.SetCellValue("你好哪些常见的那几款");
            
            //合并单元格                            首行,尾行,首列.尾列
            var hb=new NPOI.SS.Util.CellRangeAddress(0,4,0,3);//A1:D5;
            //合并区域
            st.AddMergedRegion(hb);
            
            //设置字体颜色对象
            var MyFont = wk.CreateFont();
            //创建单元格样式
            var MyCellStyle = wk.CreateCellStyle();

            MyFont.FontHeightInPoints = 25;//15#字体
           // MyFont.FontName = "微软雅黑";//字体
            MyFont.Color = NPOI.HSSF.Util.HSSFColor.DarkBlue.Index;//字体颜色

            //单元格底色(填充样式)
            MyCellStyle.FillPattern = NPOI.SS.UserModel.FillPattern.SolidForeground;
            MyCellStyle.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.LightGreen.Index;

            //嵌入字体
            MyCellStyle.SetFont(MyFont);

            //单元格样式赋值给单元格
            c.CellStyle = MyCellStyle;
                            
            //写入文件流              地址(完整路径)          创建          写
            var fs = new FileStream(@"D:\stu\123.xlsx", FileMode.Create, FileAccess.Write);
           //写入
            wk.Write(fs);
            //关闭文件流
            fs.Close();

            MessageBox.Show("导出成功","提示信息");





        }


        //关闭窗口
        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }



    }
}
